package java学习.第17章_反射机制;

import org.junit.Test;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;

public class G7_获取运行时类的注解 {

    /**
     * 不能获取 @SuppressWarnings("846")
     * 这个注解
     * 因为 @Documented :表示所修饰的注解在javadoc解析时   保留下来（api）
     * 次注解没有被 @Documented 修饰
     */
    @Test
    public void 反射获得所有运行时注解() {
        Class<FS> fsClass = FS.class;

        Annotation[] annotations = fsClass.getAnnotations();
        for (Annotation a:annotations){
            System.out.println(a);
        }//遍历他的注释
    }
    @Test
    public void 获取类指定注解(){
        Class<FS> fsClass = FS.class;
        Table annotation = fsClass.getAnnotation(Table.class);
        System.out.println(annotation.name());
    }
    @Test
    public void 获取属性指定注解() throws Exception {
        Class<FS> fsClass = FS.class;
        Field name = fsClass.getDeclaredField("name");//获取属性
        //获取属性的注解   方法同理
        Column annotation = name.getAnnotation(Column.class);
        System.out.println(annotation.columName());
        System.out.println(annotation.columType());
    }

}
